package com.cookie.meetproject.ui;

import androidx.annotation.NonNull;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;

import com.cookie.framework.base.BaseUIActivity;
import com.cookie.framework.bmob.BmobManger;
import com.cookie.framework.entity.Constants;
import com.cookie.framework.utils.SpUtils;
import com.cookie.meetproject.MainActivity;
import com.cookie.meetproject.R;

/**
 * 启动页
 */
public class IndexActivity extends BaseUIActivity {

    /**
     * 1.把启动页全屏
     * 2.延迟进入主页
     * 3.根据具体逻辑是进入主页还是引导页还是登录页
     * 4.适配刘海屏
     */

    private static final int SKIP_MAIN = 1000;
    private Handler handler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(@NonNull Message msg) {
            switch (msg.what) {
                case SKIP_MAIN:
                    startMain();
                    break;
            }
            return false;
        }
    });


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_index);
        handler.sendEmptyMessageDelayed(SKIP_MAIN, 2 * 1000);
    }

    //进入主页
    private void startMain() {
        //1.判断APP是否第一次启动 install --> first run
        boolean isFirstApp = SpUtils.getInstance().getBoolean(Constants.SP_IS_FIRST_APP, true);
        Intent intent = new Intent();
        if (isFirstApp) {
            //跳转到引导页
            intent.setClass(this, GuideActivity.class);
            //非第一次启动
            SpUtils.getInstance().putBoolean(Constants.SP_IS_FIRST_APP, false);
        } else {
            //2.如果非第一次启动，判断是否曾经登录过
            String token = SpUtils.getInstance().getString(Constants.SP_TOKEN, "");
            if (TextUtils.isEmpty(token)) {
                //3.判断bmob是否登录
                if (BmobManger.getInstance().isLogin()){
                    intent.setClass(this, MainActivity.class);
                }else {
                    //跳转到登录页
                    intent.setClass(this, LoginActivity.class);
                }
            } else {
                //跳转到主页
                intent.setClass(this, MainActivity.class);
            }
        }
        startActivity(intent);
        finish();
    }

    /**
     * 优化
     * 冷启动经过的步骤:
     * 1.第一次安装,加载应用程序并且启动
     * 2.启动后显示一个空白的窗口 getWindow()
     * 3.启动/创建了我们的应用进程
     *
     * App内部:
     * 1.创建APP对象/Application对象
     * 2.启动主线程(Main/UI Thread)
     * 3.创建应用入口/LAUNCHER
     * 4.填充ViewGroup中的View
     * 5.绘制View  measure -> layout ->draw
     *
     * 优化手段
     * 1.视图优化
     *   1.设置主题透明
     *   2.设置启动图片
     * 2.代码优化
     *    1.优化Application
     *    2.布局的优化,不需要繁琐的布局
     *    3.阻塞UI线程的操作
     *    4.加载Bitmap/大图
     *    5.其他的一个占用主线程操作
     * 检测APP Activity的启动时间
     * 1.shell
     *   ActivityManager -> adb shell am start -S -W com.cookie.meetproject/com.cookie.meetproject.ui.IndexActivity
     *   ThisTime: 267ms 最后一个activity启动耗时
     *   TotalTime: 267ms 启动一连串Activity总耗时
     *   WaitTime: 290ms 应用创建的时间+TotalTime
     *   应用创建时间: WaitTime-TotalTime (290-267=23ms)
     * 2.log
     * Android4.4开始ActivityManager增加了log tag=displayed
     */
}
